/**
 * 环境配置管理模块
 * 提供统一的环境变量处理和API地址配置
 */

// 默认配置
const defaultConfig = {
  development: {
    apiBaseUrl: 'http://localhost:3000/api',
    appName: 'react_app'
  },
  staging: {
    apiBaseUrl: 'https://staging-api-react.example.com/api',
    appName: 'react_app_staging'
  },
  production: {
    apiBaseUrl: 'https://api-react.example.com/api',
    appName: 'react_app'
  }
};

/**
 * 获取当前环境
 * @returns {string} 当前环境名称
 */
export function getCurrentEnv() {
  // 通过环境变量获取
  if (process.env.NODE_ENV) {
    return process.env.NODE_ENV;
  }
  
  // 通过自定义环境变量获取
  if (process.env.REACT_APP_ENV) {
    return process.env.REACT_APP_ENV;
  }
  
  // 默认为开发环境
  return 'development';
}

/**
 * 获取API基础URL
 * @returns {string} API基础URL
 */
export function getApiBaseUrl() {
  // 通过环境变量直接指定API地址（最高优先级）
  if (process.env.REACT_APP_API_BASE_URL) {
    return process.env.REACT_APP_API_BASE_URL;
  }
  
  // 根据当前环境获取配置
  const env = getCurrentEnv();
  const config = defaultConfig[env] || defaultConfig.development;
  
  return config.apiBaseUrl;
}

/**
 * 获取应用名称
 * @returns {string} 应用名称
 */
export function getAppName() {
  const env = getCurrentEnv();
  const config = defaultConfig[env] || defaultConfig.development;
  
  return config.appName;
}

/**
 * 获取配置项
 * @param {string} key 配置项键名
 * @returns {any} 配置项值
 */
export function getConfig(key) {
  // 通过环境变量获取特定配置
  const envKey = key.toUpperCase();
  
  if (process.env[`REACT_APP_${envKey}`]) {
    return process.env[`REACT_APP_${envKey}`];
  }
  
  if (process.env[envKey]) {
    return process.env[envKey];
  }
  
  // 返回默认配置
  return null;
}

export default {
  getCurrentEnv,
  getApiBaseUrl,
  getAppName,
  getConfig
};